#ifndef PIDCONTROLLER_H
#define PIDCONTROLLER_H


class PidController
{
    public:
        PidController() = default;
        PidController(float kp,float ki,float kd);

        float update(float current); //提供当前值,返回下次输出,也就也是PID的结果
        void update_target(float target);//更新目标值
        void update_pid(float kp,float ki,float kd);//更新pid参数
        void reset();//重置PID
        void out_limit(float min,float max);//设置输出限制



    private:
        float target_;
        float out_min_;
        float out_max_;
        float intergral_up_=2500;//积分上限

        float kp_;
        float ki_;
        float kd_;

        //pid中间过程值
        float error_;
        float error_sum_;
        float derror_;
        float prev_error_;


};




#endif //PIDCONTROLLER_H